home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / telecomm / uemlsrc.arc / page.c < prev    next >
C/C++ Source or Header  |  1987-08-24  |  2KB  |  102 lines

  1. #include <stdio.h>
  2. #include "ed.h"
  3.  
  4. int pagelen = 60;       /* default page length */
  5.  
  6. /* PAGINATE : eXtended command  Set mark, goto beginning of file and move
  7.  * beginning to end inserting formfeeds.  Bound to CTLX-!.
  8.  */
  9.  
  10. paginate(f, n)
  11. register int f, n;
  12. {
  13.         setmark(NULL, 1);
  14.         gotobob(NULL, 1);
  15.  
  16.         while(pageforw(NULL, 1) != FALSE)
  17.                 {
  18.                 openline(NULL, 1);
  19.                 linsert(1 ,'\f');
  20.                 }
  21.         return(swapmark(NULL, 1));
  22. }
  23.  
  24. /* SETPAGE eXtended command  Set page length for paginate.  Or tell page
  25.  * length already set.  Bound to CTLX-#.
  26.  */
  27.  
  28. setpage(f ,n)
  29. register int f, n;
  30. {
  31.  
  32.         if (n > 1 && n < 100)
  33.                 pagelen = n;
  34.  
  35.         mlwrite ("Page length is %d", pagelen);
  36.                 return(TRUE);
  37. }
  38.  
  39. /* PAGEFORW eXtended command  move forward by set page size.  Bound to
  40.  * CTLX-+.
  41.  */
  42.  
  43. pageforw(f, n)
  44. register int f, n;
  45. {
  46.         register int c;
  47.  
  48.         c = 0;
  49.  
  50.         if (n < 0)
  51.                 return(pageback(f, -n));
  52.         while(n)
  53.                 {
  54.                 if (curwp->w_dotp != curbp->b_linep)
  55.                         {
  56.                         forwline(NULL, 1);
  57.                         ++c;
  58.                         if (c == pagelen)
  59.                                 {
  60.                                 c = 0;
  61.                                 --n;
  62.                                 continue;
  63.                                 }
  64.                         }
  65.                 else
  66.                         return(FALSE);
  67.                 }
  68.         return(TRUE);
  69. }
  70.  
  71. /* PAGEBACK eXtended command  move forward by set page size.  Bound to
  72.  * CTLX-+.
  73.  */
  74.  
  75. pageback(f, n)
  76. register int f, n;
  77. {
  78.         register int c;
  79.  
  80.         c = 0;
  81.  
  82.         if (n < 0)
  83.                 return(pageforw(f, -n));
  84.         while(n)
  85.                 {
  86.                 if (lback(curwp->w_dotp) != curbp->b_linep)
  87.                         {
  88.                         backline(NULL, 1);
  89.                         ++c;
  90.                         if (c == pagelen)
  91.                                 {
  92.                                 c = 0;
  93.                                 --n;
  94.                                 continue;
  95.                                 }
  96.                         }
  97.                 else
  98.                         return(FALSE);
  99.                 }
  100.         return(TRUE);
  101. }
  102.